package base.thread_JUC2.chapter01.demo007;

import org.junit.Test;

import java.util.ArrayDeque;
import java.util.Deque;
import java.util.HashSet;

/**
 * 创建两个线程：<br>
 * 一个用户线程，将事件写入到队列中<br>
 * 另一个守护线程，管理这个队列，如果生成的事件超过10s钟，就会被移除。
 *
 * 本案例运行结果分析说明:
 * 结尾输出 Size of the queue: 48 而不是 Size of the queue: 0
 * 因为CleanerTask 是守护进程:setDaemon(true),main方法执行完毕就结束虚拟机.
 * 如果不是守护进程,CleanTask逻辑一定会报异常在:Event event = deque.getLast();
 */
public class TestCase {
    public static void main(String[] args) throws Exception {
        Deque<Event> deque = new ArrayDeque<>();

        WriterTask writerTask = new WriterTask(deque);
        for (int i = 0; i < 3; i++) {
            Thread thread = new Thread(writerTask);
            thread.start();
        }

        CleanerTask cleanerTask = new CleanerTask(deque);
        cleanerTask.start();
    }

}
